package com.tc.netty;

import io.netty.channel.DefaultEventLoopGroup;
import io.netty.channel.EventLoop;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.util.NettyRuntime;
import lombok.extern.slf4j.Slf4j;

import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * @Auther: tianchao
 * @Date: 2022/2/10 14:43
 * @Description:
 * DefaultEventLoopGroup 能处理普通任务/定时任务，并不能处理io任务
 */
@Slf4j
public class TestEventLoop {
    public static void main(String[] args) {
        // 1 创建事件循环组
        // NioEventLoopGroup 这个实现 支持 --> io事件/普通任务/定时任务
        EventLoopGroup eventLoopGroup = new NioEventLoopGroup(2);
        // 2 获取下一个事件循环对象
        System.out.println(eventLoopGroup.next());
        System.out.println(eventLoopGroup.next());
        System.out.println(eventLoopGroup.next());
        System.out.println(eventLoopGroup.next());
        // 3 执行普通任务
        EventLoop eventLoop = eventLoopGroup.next();
        eventLoop.submit(()->{
            log.debug("do work");
        });
        // 4 执行定时任务
        eventLoopGroup.next().scheduleAtFixedRate(()->{
            log.debug("do time work {}",new Date());
        },0,1, TimeUnit.SECONDS);
        log.debug("main end");
    }
}
